🎯 core 流程圖

AIVA 跨模組流程圖組合視覺化

18
流程圖總數
0
序列圖
18
流程圖
2025-10-17
生成日期
1. core aiva core ai engine backup bio neuron core Module
flowchart core
flowchart TB n1([開始]) n2([結束]) n3['\nBioNeuron Core - 生物啟發式神經網路決策核心\n來源: BioNeu...] n4[from __future__ import annotations] n5[import logging] n6[import time] n7[from typing import TYPE_CHECKING, Any] n8[import numpy as np] n9{if TYPE_CHECKING} n10[pass] n11[] n12[logger = logging.getLogger(__...] n13[class BiologicalSpikingLayer(...)] n14[class AntiHallucinationModule(...)] n15[class ScalableBioNet(...)] n16[class BioNeuronRAGAgent(...)] n1 --> n3 n3 --> n4 n4 --> n5 n5 --> n6 n6 --> n7 n7 --> n8 n8 --> n9 n9 -->|Yes| n10 n9 -->|No| n11 n10 --> n11 n11 --> n12 n12 --> n13 n13 --> n14 n14 --> n15 n15 --> n16 n16 --> n2
flowchart TB
    n1([開始])
    n2([結束])
    n3['\nBioNeuron Core - 生物啟發式神經網路決策核心\n來源: BioNeu...]
    n4[from __future__ import annotations]
    n5[import logging]
    n6[import time]
    n7[from typing import TYPE_CHECKING, Any]
    n8[import numpy as np]
    n9{if TYPE_CHECKING}
    n10[pass]
    n11[]
    n12[logger = logging.getLogger(__...]
    n13[class BiologicalSpikingLayer(...)]
    n14[class AntiHallucinationModule(...)]
    n15[class ScalableBioNet(...)]
    n16[class BioNeuronRAGAgent(...)]
    n1 --> n3
    n3 --> n4
    n4 --> n5
    n5 --> n6
    n6 --> n7
    n7 --> n8
    n8 --> n9
    n9 -->|Yes| n10
    n9 -->|No| n11
    n10 --> n11
    n11 --> n12
    n12 --> n13
    n13 --> n14
    n14 --> n15
    n15 --> n16
    n16 --> n2
2. core aiva core ai engine bio neuron core Module
flowchart core
flowchart TB n1([開始]) n2([結束]) n3['\nBioNeuron Core - 生物啟發式神經網路決策核心\n來源: BioNeu...] n4[from __future__ import annotations] n5[import logging] n6[import time] n7[from typing import TYPE_CHECKING, Any] n8[import numpy as np] n9{if TYPE_CHECKING} n10[pass] n11[] n12[logger = logging.getLogger(__...] n13[class BiologicalSpikingLayer(...)] n14[class AntiHallucinationModule(...)] n15[class ScalableBioNet(...)] n16[class BioNeuronRAGAgent(...)] n1 --> n3 n3 --> n4 n4 --> n5 n5 --> n6 n6 --> n7 n7 --> n8 n8 --> n9 n9 -->|Yes| n10 n9 -->|No| n11 n10 --> n11 n11 --> n12 n12 --> n13 n13 --> n14 n14 --> n15 n15 --> n16 n16 --> n2
flowchart TB
    n1([開始])
    n2([結束])
    n3['\nBioNeuron Core - 生物啟發式神經網路決策核心\n來源: BioNeu...]
    n4[from __future__ import annotations]
    n5[import logging]
    n6[import time]
    n7[from typing import TYPE_CHECKING, Any]
    n8[import numpy as np]
    n9{if TYPE_CHECKING}
    n10[pass]
    n11[]
    n12[logger = logging.getLogger(__...]
    n13[class BiologicalSpikingLayer(...)]
    n14[class AntiHallucinationModule(...)]
    n15[class ScalableBioNet(...)]
    n16[class BioNeuronRAGAgent(...)]
    n1 --> n3
    n3 --> n4
    n4 --> n5
    n5 --> n6
    n6 --> n7
    n7 --> n8
    n8 --> n9
    n9 -->|Yes| n10
    n9 -->|No| n11
    n10 --> n11
    n11 --> n12
    n12 --> n13
    n13 --> n14
    n14 --> n15
    n15 --> n16
    n16 --> n2
3. core aiva core messaging init Module
flowchart core
flowchart TB n1([開始]) n2([結束]) n3['\nMessaging Module - 消息處理模組\n\n負責與各功能模組的消息交互...] n4[from .message_broker import MessageBroker] n5[from .result_collector import ResultCollector] n6[from .task_dispatcher import TaskDispatcher] n7[__all__ = ['MessageBroker', &...] n1 --> n3 n3 --> n4 n4 --> n5 n5 --> n6 n6 --> n7 n7 --> n2
flowchart TB
    n1([開始])
    n2([結束])
    n3['\nMessaging Module - 消息處理模組\n\n負責與各功能模組的消息交互...]
    n4[from .message_broker import MessageBroker]
    n5[from .result_collector import ResultCollector]
    n6[from .task_dispatcher import TaskDispatcher]
    n7[__all__ = ['MessageBroker', &...]
    n1 --> n3
    n3 --> n4
    n4 --> n5
    n5 --> n6
    n6 --> n7
    n7 --> n2
4. core aiva core messaging message broker Function init
flowchart core
flowchart TB n1([開始]) n2([結束]) n3['初始化 RPC 客戶端\n\n Args:\n ch...] n4[self.channel = channel] n5[self.exchange = exchange] n6[self.timeout = timeout] n7[self.futures: dict[str, asyncio.Future] = {&...] n8[self.callback_queue: AbstractQueue | None = None] n1 --> n3 n3 --> n4 n4 --> n5 n5 --> n6 n6 --> n7 n7 --> n8 n8 --> n2
flowchart TB
    n1([開始])
    n2([結束])
    n3['初始化 RPC 客戶端\n\n        Args:\n            ch...]
    n4[self.channel = channel]
    n5[self.exchange = exchange]
    n6[self.timeout = timeout]
    n7[self.futures: dict[str, asyncio.Future] = {&...]
    n8[self.callback_queue: AbstractQueue | None = None]
    n1 --> n3
    n3 --> n4
    n4 --> n5
    n5 --> n6
    n6 --> n7
    n7 --> n8
    n8 --> n2
5. core aiva core messaging message broker Module
flowchart core
flowchart TB n1([開始]) n2([結束]) n3['\nMessage Broker - 消息代理\n\n統一管理 RabbitMQ 連接和...] n4[from __future__ import annotations] n5[import asyncio] n6[from collections.abc import Callable] n7[from contextlib import suppress] n8[import json] n9[import logging] n10[from typing import Any] n11[import aio_pika] n12[from aio_pika.abc import AbstractChannel, Abstract...] n13[from services.aiva_common.config import get_settin...] n14[from services.aiva_common.enums import ModuleName] n15[from services.aiva_common.schemas import AivaMessa...] n16[logger = logging.getLogger(__...] n17[class MessageBroker(...)] n18[class RPCClient(...)] n1 --> n3 n3 --> n4 n4 --> n5 n5 --> n6 n6 --> n7 n7 --> n8 n8 --> n9 n9 --> n10 n10 --> n11 n11 --> n12 n12 --> n13 n13 --> n14 n14 --> n15 n15 --> n16 n16 --> n17 n17 --> n18 n18 --> n2
flowchart TB
    n1([開始])
    n2([結束])
    n3['\nMessage Broker - 消息代理\n\n統一管理 RabbitMQ 連接和...]
    n4[from __future__ import annotations]
    n5[import asyncio]
    n6[from collections.abc import Callable]
    n7[from contextlib import suppress]
    n8[import json]
    n9[import logging]
    n10[from typing import Any]
    n11[import aio_pika]
    n12[from aio_pika.abc import AbstractChannel, Abstract...]
    n13[from services.aiva_common.config import get_settin...]
    n14[from services.aiva_common.enums import ModuleName]
    n15[from services.aiva_common.schemas import AivaMessa...]
    n16[logger = logging.getLogger(__...]
    n17[class MessageBroker(...)]
    n18[class RPCClient(...)]
    n1 --> n3
    n3 --> n4
    n4 --> n5
    n5 --> n6
    n6 --> n7
    n7 --> n8
    n8 --> n9
    n9 --> n10
    n10 --> n11
    n11 --> n12
    n12 --> n13
    n13 --> n14
    n14 --> n15
    n15 --> n16
    n16 --> n17
    n17 --> n18
    n18 --> n2
6. core aiva core messaging result collector Function init
flowchart core
flowchart TB n1([開始]) n2([結束]) n3['初始化結果收集器\n\n Args:\n broke...] n4[self.broker = broker] n5[self.storage = storage_backend] n6[self.result_handlers: dict[str, list[Callable]...] n7[self.pending_results: dict[str, dict[str, Any]...] n8[logger.info('ResultCollector initialized&...] n1 --> n3 n3 --> n4 n4 --> n5 n5 --> n6 n6 --> n7 n7 --> n8 n8 --> n2
flowchart TB
    n1([開始])
    n2([結束])
    n3['初始化結果收集器\n\n        Args:\n            broke...]
    n4[self.broker = broker]
    n5[self.storage = storage_backend]
    n6[self.result_handlers: dict[str, list[Callable&#93...]
    n7[self.pending_results: dict[str, dict[str, Any&#93...]
    n8[logger.info('ResultCollector initialized&...]
    n1 --> n3
    n3 --> n4
    n4 --> n5
    n5 --> n6
    n6 --> n7
    n7 --> n8
    n8 --> n2
7. core aiva core messaging result collector Function set pending result
flowchart core
flowchart TB n1([開始]) n2([結束]) n3['設置等待中的結果\n\n Args:\n resul...] n4[self.pending_results[result_id] = {&#...] n5[logger.debug(f'Set pending result for ...] n1 --> n3 n3 --> n4 n4 --> n5 n5 --> n2
flowchart TB
    n1([開始])
    n2([結束])
    n3['設置等待中的結果\n\n        Args:\n            resul...]
    n4[self.pending_results[result_id] = {&&#35...]
    n5[logger.debug(f'Set pending result for &#1...]
    n1 --> n3
    n3 --> n4
    n4 --> n5
    n5 --> n2
8. core aiva core messaging result collector Function register handler
flowchart core
flowchart TB n1([開始]) n2([結束]) n3['註冊結果處理器\n\n Args:\n event_...] n4{if event_type not in self.resu...} n5[self.result_handlers[event_type] = []] n6[] n7[self.result_handlers[event_type].append(handl...] n8[logger.debug(f'Registered handler for ...] n1 --> n3 n3 --> n4 n4 -->|Yes| n5 n4 -->|No| n6 n5 --> n6 n6 --> n7 n7 --> n8 n8 --> n2
flowchart TB
    n1([開始])
    n2([結束])
    n3['註冊結果處理器\n\n        Args:\n            event_...]
    n4{if event_type not in self.resu...}
    n5[self.result_handlers[event_type] = []]
    n6[]
    n7[self.result_handlers[event_type].append(handl...]
    n8[logger.debug(f'Registered handler for &#1...]
    n1 --> n3
    n3 --> n4
    n4 -->|Yes| n5
    n4 -->|No| n6
    n5 --> n6
    n6 --> n7
    n7 --> n8
    n8 --> n2
9. core aiva core messaging result collector Function unregister handler
flowchart core
flowchart TB n1([開始]) n2([結束]) n3['取消註冊處理器\n\n Args:\n event_...] n4{if event_type in self.result_h...} n5[try] n6[self.result_handlers[event_type].remove(handl...] n7[logger.debug(f'Unregistered handler for &...] n8[] n9[except ValueError] n10[pass] n11[] n1 --> n3 n3 --> n4 n4 -->|Yes| n5 n4 -->|No| n11 n5 --> n6 n5 --> n9 n6 --> n7 n7 --> n8 n8 --> n11 n9 --> n10 n10 --> n8 n11 --> n2
flowchart TB
    n1([開始])
    n2([結束])
    n3['取消註冊處理器\n\n        Args:\n            event_...]
    n4{if event_type in self.result_h...}
    n5[try]
    n6[self.result_handlers[event_type].remove(handl...]
    n7[logger.debug(f'Unregistered handler for &...]
    n8[]
    n9[except ValueError]
    n10[pass]
    n11[]
    n1 --> n3
    n3 --> n4
    n4 -->|Yes| n5
    n4 -->|No| n11
    n5 --> n6
    n5 --> n9
    n6 --> n7
    n7 --> n8
    n8 --> n11
    n9 --> n10
    n10 --> n8
    n11 --> n2
10. core aiva core messaging result collector Module
flowchart core
flowchart TB n1([開始]) n2([結束]) n3['\nResult Collector - 結果收集器\n\n接收並處理各功能模組傳回的執...] n4[from __future__ import annotations] n5[import asyncio] n6[from collections.abc import Callable] n7[from datetime import UTC, datetime] n8[import json] n9[import logging] n10[from typing import Any] n11[from aio_pika.abc import AbstractIncomingMessage] n12[from services.aiva_common.schemas import FindingPa...] n13[from .message_broker import MessageBroker] n14[logger = logging.getLogger(__...] n15[class ResultCollector(...)] n1 --> n3 n3 --> n4 n4 --> n5 n5 --> n6 n6 --> n7 n7 --> n8 n8 --> n9 n9 --> n10 n10 --> n11 n11 --> n12 n12 --> n13 n13 --> n14 n14 --> n15 n15 --> n2
flowchart TB
    n1([開始])
    n2([結束])
    n3['\nResult Collector - 結果收集器\n\n接收並處理各功能模組傳回的執...]
    n4[from __future__ import annotations]
    n5[import asyncio]
    n6[from collections.abc import Callable]
    n7[from datetime import UTC, datetime]
    n8[import json]
    n9[import logging]
    n10[from typing import Any]
    n11[from aio_pika.abc import AbstractIncomingMessage]
    n12[from services.aiva_common.schemas import FindingPa...]
    n13[from .message_broker import MessageBroker]
    n14[logger = logging.getLogger(__...]
    n15[class ResultCollector(...)]
    n1 --> n3
    n3 --> n4
    n4 --> n5
    n5 --> n6
    n6 --> n7
    n7 --> n8
    n8 --> n9
    n9 --> n10
    n10 --> n11
    n11 --> n12
    n12 --> n13
    n13 --> n14
    n14 --> n15
    n15 --> n2
11. core aiva core messaging task dispatcher Function init
flowchart core
flowchart TB n1([開始]) n2([結束]) n3['初始化任務派發器\n\n Args:\n broke...] n4[self.broker = broker] n5[self.module_name = module_name] n6[self.task_callbacks: dict[str, Callable] = {...] n7[self.tool_routing_map = {'function_sqli&...] n8[logger.info('TaskDispatcher initialized&a...] n1 --> n3 n3 --> n4 n4 --> n5 n5 --> n6 n6 --> n7 n7 --> n8 n8 --> n2
flowchart TB
    n1([開始])
    n2([結束])
    n3['初始化任務派發器\n\n        Args:\n            broke...]
    n4[self.broker = broker]
    n5[self.module_name = module_name]
    n6[self.task_callbacks: dict[str, Callable] = {...]
    n7[self.tool_routing_map = {'function_sqli&...]
    n8[logger.info('TaskDispatcher initialized&a...]
    n1 --> n3
    n3 --> n4
    n4 --> n5
    n5 --> n6
    n6 --> n7
    n7 --> n8
    n8 --> n2
12. core aiva core messaging task dispatcher Function build message
flowchart core
flowchart TB n1([開始]) n2([結束]) n3['構建 AIVA 消息\n\n Args:\n top...] n4[header = MessageHeader(messag...] n5[message = AivaMessage(header=h...] n6[return message] n1 --> n3 n3 --> n4 n4 --> n5 n5 --> n6 n6 --> n2
flowchart TB
    n1([開始])
    n2([結束])
    n3['構建 AIVA 消息\n\n        Args:\n            top...]
    n4[header = MessageHeader(messag...]
    n5[message = AivaMessage(header=h...]
    n6[return message]
    n1 --> n3
    n3 --> n4
    n4 --> n5
    n5 --> n6
    n6 --> n2
13. core aiva core messaging task dispatcher Function build task payload
flowchart core
flowchart TB n1([開始]) n2([結束]) n3['構建功能任務 Payload\n\n Args:\n ...] n4[target = FunctionTaskTarget(u...] n5[payload = FunctionTaskPayload(...] n6[return payload] n1 --> n3 n3 --> n4 n4 --> n5 n5 --> n6 n6 --> n2
flowchart TB
    n1([開始])
    n2([結束])
    n3['構建功能任務 Payload\n\n        Args:\n           ...]
    n4[target = FunctionTaskTarget(u...]
    n5[payload = FunctionTaskPayload(...]
    n6[return payload]
    n1 --> n3
    n3 --> n4
    n4 --> n5
    n5 --> n6
    n6 --> n2
14. core aiva core messaging task dispatcher Function get topic for tool
flowchart core
flowchart TB n1([開始]) n2([結束]) n3['根據工具類型獲取對應的 Topic\n\n Args:\n ...] n4[topic_map = {'function_sqli'...] n5[return topic_map.get(tool_type, Topic...] n1 --> n3 n3 --> n4 n4 --> n5 n5 --> n2
flowchart TB
    n1([開始])
    n2([結束])
    n3['根據工具類型獲取對應的 Topic\n\n        Args:\n        ...]
    n4[topic_map = {'function_sqli'...]
    n5[return topic_map.get(tool_type, Topic...]
    n1 --> n3
    n3 --> n4
    n4 --> n5
    n5 --> n2
15. core aiva core messaging task dispatcher Function register callback
flowchart core
flowchart TB n1([開始]) n2([結束]) n3['註冊任務完成回調\n\n Args:\n task_...] n4[self.task_callbacks[task_id] = callback] n5[logger.debug(f'Registered callback for ta...] n1 --> n3 n3 --> n4 n4 --> n5 n5 --> n2
flowchart TB
    n1([開始])
    n2([結束])
    n3['註冊任務完成回調\n\n        Args:\n            task_...]
    n4[self.task_callbacks[task_id] = callback]
    n5[logger.debug(f'Registered callback for ta...]
    n1 --> n3
    n3 --> n4
    n4 --> n5
    n5 --> n2
16. core aiva core messaging task dispatcher Function unregister callback
flowchart core
flowchart TB n1([開始]) n2([結束]) n3['取消註冊回調\n\n Args:\n task_id...] n4{if task_id in self.task_callbacks} n5[del self.task_callbacks[task_id]] n6[logger.debug(f'Unregistered callback for ...] n7[] n1 --> n3 n3 --> n4 n4 -->|Yes| n5 n4 -->|No| n7 n5 --> n6 n6 --> n7 n7 --> n2
flowchart TB
    n1([開始])
    n2([結束])
    n3['取消註冊回調\n\n        Args:\n            task_id...]
    n4{if task_id in self.task_callbacks}
    n5[del self.task_callbacks[task_id]]
    n6[logger.debug(f'Unregistered callback for ...]
    n7[]
    n1 --> n3
    n3 --> n4
    n4 -->|Yes| n5
    n4 -->|No| n7
    n5 --> n6
    n6 --> n7
    n7 --> n2
17. core aiva core messaging task dispatcher Module
flowchart core
flowchart TB n1([開始]) n2([結束]) n3['\nTask Dispatcher - 任務派發器\n\n負責將攻擊計畫轉換為任務並派發...] n4[from __future__ import annotations] n5[import asyncio] n6[from collections.abc import Callable] n7[from datetime import UTC, datetime] n8[import logging] n9[from typing import Any] n10[from uuid import uuid4] n11[from services.aiva_common.schemas import AivaMessa...] n12[from .message_broker import MessageBroker] n13[logger = logging.getLogger(__...] n14[class TaskDispatcher(...)] n1 --> n3 n3 --> n4 n4 --> n5 n5 --> n6 n6 --> n7 n7 --> n8 n8 --> n9 n9 --> n10 n10 --> n11 n11 --> n12 n12 --> n13 n13 --> n14 n14 --> n2
flowchart TB
    n1([開始])
    n2([結束])
    n3['\nTask Dispatcher - 任務派發器\n\n負責將攻擊計畫轉換為任務並派發...]
    n4[from __future__ import annotations]
    n5[import asyncio]
    n6[from collections.abc import Callable]
    n7[from datetime import UTC, datetime]
    n8[import logging]
    n9[from typing import Any]
    n10[from uuid import uuid4]
    n11[from services.aiva_common.schemas import AivaMessa...]
    n12[from .message_broker import MessageBroker]
    n13[logger = logging.getLogger(__...]
    n14[class TaskDispatcher(...)]
    n1 --> n3
    n3 --> n4
    n4 --> n5
    n5 --> n6
    n6 --> n7
    n7 --> n8
    n8 --> n9
    n9 --> n10
    n10 --> n11
    n11 --> n12
    n12 --> n13
    n13 --> n14
    n14 --> n2
18. core aiva core optimized core Module
flowchart core
flowchart TB n1([開始]) n2([結束]) n3['\nAIVA 自主 AI 核心 - 無需外部 LLM 依賴\n\n🧠 核心特色:\n- ...] n4[from __future__ import annotations] n5[import asyncio] n6[from collections import defaultdict] n7[from collections.abc import Callable] n8[from contextlib import asynccontextmanager] n9[from dataclasses import dataclass] n10[import gc] n11[import time] n12[from typing import Any] n13[import weakref] n14[from fastapi import FastAPI] n15[import numpy as np] n16[class ParallelMessageProcessor(...)] n17[class OptimizedBioNet(...)] n18[class ComponentPool(...)] n19[class MemoryManager(...)] n20[class Metric(...)] n21[class MetricsCollector(...)] n22[def monitor_performance(...)] n23[message_processor = ParallelMessageProce...] n24[optimized_bio_net = OptimizedBioNet(inpu...] n25[memory_manager = MemoryManager(gc_thr...] n26[metrics_collector = MetricsCollector()] n27[component_pools = {'scan_interface&&...] n28[def optimized_process_scan_results(...)] n29[def optimized_ai_prediction(...)] n30[app = FastAPI(title='AIVA ...] n31[def startup(...)] n32[def get_metrics(...)] n33[def health_check(...)] n34[class AIVAAutonomyProof(...)] n35[def prove_aiva_independence(...)] n36{if __name__ == '__main__'} n37[prove_aiva_independence()] n38[] n1 --> n3 n3 --> n4 n4 --> n5 n5 --> n6 n6 --> n7 n7 --> n8 n8 --> n9 n9 --> n10 n10 --> n11 n11 --> n12 n12 --> n13 n13 --> n14 n14 --> n15 n15 --> n16 n16 --> n17 n17 --> n18 n18 --> n19 n19 --> n20 n20 --> n21 n21 --> n22 n22 --> n23 n23 --> n24 n24 --> n25 n25 --> n26 n26 --> n27 n27 --> n28 n28 --> n29 n29 --> n30 n30 --> n31 n31 --> n32 n32 --> n33 n33 --> n34 n34 --> n35 n35 --> n36 n36 -->|Yes| n37 n36 -->|No| n38 n37 --> n38 n38 --> n2
flowchart TB
    n1([開始])
    n2([結束])
    n3['\nAIVA 自主 AI 核心 - 無需外部 LLM 依賴\n\n🧠 核心特色:\n- ...]
    n4[from __future__ import annotations]
    n5[import asyncio]
    n6[from collections import defaultdict]
    n7[from collections.abc import Callable]
    n8[from contextlib import asynccontextmanager]
    n9[from dataclasses import dataclass]
    n10[import gc]
    n11[import time]
    n12[from typing import Any]
    n13[import weakref]
    n14[from fastapi import FastAPI]
    n15[import numpy as np]
    n16[class ParallelMessageProcessor(...)]
    n17[class OptimizedBioNet(...)]
    n18[class ComponentPool(...)]
    n19[class MemoryManager(...)]
    n20[class Metric(...)]
    n21[class MetricsCollector(...)]
    n22[def monitor_performance(...)]
    n23[message_processor = ParallelMessageProce...]
    n24[optimized_bio_net = OptimizedBioNet(inpu...]
    n25[memory_manager = MemoryManager(gc_thr...]
    n26[metrics_collector = MetricsCollector()]
    n27[component_pools = {'scan_interface&&...]
    n28[def optimized_process_scan_results(...)]
    n29[def optimized_ai_prediction(...)]
    n30[app = FastAPI(title='AIVA ...]
    n31[def startup(...)]
    n32[def get_metrics(...)]
    n33[def health_check(...)]
    n34[class AIVAAutonomyProof(...)]
    n35[def prove_aiva_independence(...)]
    n36{if __name__ == '__main__'}
    n37[prove_aiva_independence()]
    n38[]
    n1 --> n3
    n3 --> n4
    n4 --> n5
    n5 --> n6
    n6 --> n7
    n7 --> n8
    n8 --> n9
    n9 --> n10
    n10 --> n11
    n11 --> n12
    n12 --> n13
    n13 --> n14
    n14 --> n15
    n15 --> n16
    n16 --> n17
    n17 --> n18
    n18 --> n19
    n19 --> n20
    n20 --> n21
    n21 --> n22
    n22 --> n23
    n23 --> n24
    n24 --> n25
    n25 --> n26
    n26 --> n27
    n27 --> n28
    n28 --> n29
    n29 --> n30
    n30 --> n31
    n31 --> n32
    n32 --> n33
    n33 --> n34
    n34 --> n35
    n35 --> n36
    n36 -->|Yes| n37
    n36 -->|No| n38
    n37 --> n38
    n38 --> n2